home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / wordwars.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-05-25  |  13.3 KB  |  278 lines

  1. 10  KEY OFF
  2. 20  SCREEN 0,0,0
  3. 25  WIDTH 80
  4. 30  COLOR 7,1,1
  5. 40  GOTO 530
  6. 50  REM
  7. 60  REM ** DECREMENT CLOCK, PRINT TIME REMAINING, CHECK FOR SIXTY **
  8. 70  REM ** SECOND WARNING, AND BEEP SPEAKER IF IT'S TIME          **
  9. 80  REM
  10. 90  CL = CL - 1 : TI = 0 : LOCATE 1,72 : PRINT CL;CHR$(30)
  11. 100  IF CL = 60 OR CL = 45 OR CL = 30 OR CL = 15 OR CL <= 10 THEN LOCATE 18,25: COLOR 30,12,12: PRINT "--";CL;" SECOND WARNING--";:BEEP:COLOR 7,1,1
  12. 110  'TI = 30
  13. 120  RETURN
  14. 130  REM
  15. 140  REM ** PRINCIPAL INPUT ROUTINE.  ACCEPTS AND VALIDATES LETTERS **
  16. 150  REM ** RECOGNIZES SPECIAL CHARACTERS SUCH AS ENTER             **
  17. 160  REM
  18. 170  A$ = INKEY$ : TI = TI + 1:IF TI > 90 THEN GOSUB 90:IF CL = 0 THEN GOTO 1180
  19. 180  IF A$ = "" THEN GOTO 170
  20. 190  IF A$ >= "A" AND A$ <= "Z" THEN W$=W$+A$:LOCATE 4,P:PRINT A$;:P=P+1:TI=TI+AD : GOTO 170
  21. 200  IF A$ = CHR$(13) THEN IF LEN(W$)>0 THEN GOTO 1080 ELSE GOTO 170
  22. 210  IF A$ = CHR$(27) THEN GOSUB 2750
  23. 220  IF A$ = CHR$(30) THEN M$ = "** ABANDONING THIS GAME **" : COLOR 31,1,1 : GOSUB 430 : CLS : GN = GN - 1 :SC(CP) = 0 : COLOR 7,1,1 : GOTO 2010
  24. 230  IF A$ = CHR$(8) THEN IF W$ = "" THEN GOTO 170 ELSE W$ = LEFT$(W$,LEN(W$)-1):LOCATE 4,P-1 :PRINT " "; : P = P-1 : TI = TI + AD : GOTO 170
  25. 240  IF A$ = CHR$(29) THEN P = P - LEN(W$) : W$ = "" : LOCATE 4,P : PRINT CHR$(8); : TI = TI + AD : GOTO 170
  26. 250  GOTO 170
  27. 260  REM
  28. 270  REM ** GENERATE THE ROLL OF LETTERS FROM WHICH TO MAKE WORDS **
  29. 280  REM ** IF ROLL CONTAINS A 'Q` MAKE SURE IT IS ACCOMPANIED BY **
  30. 290  REM ** A 'U`. I MEAN, GIVE THE GUY, OR GAL, A BREAK          **
  31. 300  REM
  32. 310  TM$ = TIME$
  33. 320  SEED = VAL(LEFT$(TM$,2))*120+VAL(MID$(TM$,4,2))*60+VAL(RIGHT$(TM$,2))
  34. 330  RANDOMIZE SEED
  35. 340  QP = 0 : RL$ = "" : FOR I = 0 TO 25 : WA(I) = 0 : NEXT I
  36. 350  FOR I = 1 TO NL : Q = INT(RND*(LEN(GW$))) : IF Q = 0 THEN Q = 1
  37. 360  L$ = MID$(GW$,Q,1) : RL$ = RL$ + L$
  38. 370  L = ASC(L$) - 65 : WA(L) = WA(L) + 1
  39. 380  IF L$ = "Q" THEN QP = -1
  40. 390  NEXT I
  41. 400  IF QP THEN I = INT(RND(NL)*10) : L = ASC(MID$(RL$,I,1))-65 : WA(L) = WA(L) -1 : WA(20) = WA(20) + 1 : RL$ = LEFT$(RL$,I-1) + "U" + RIGHT$(RL$,NL-I)
  42. 410  RETURN
  43. 420  REM
  44. 430  REM ** PRINT THE MESSAGE CONTAINED IN M$ ON THE SCREEN.  PAUSE, **
  45. 440  REM ** THEN BLANK IT OUT AND RETURN                             **
  46. 450  REM
  47. 460  PD$ = STRING$((64 - LEN(M$))/2,32) : LOCATE 3,1 : PRINT PD$;M$;
  48. 470  SOUND RND*1000+37,3 : FOR X = 1 TO 900 : NEXT X : LOCATE 3,1 : PRINT PD$;STRING$(LEN(M$),32);
  49. 480  RETURN
  50. 490  REM
  51. 500  REM ** INITIALIZATION.  ASK IF INSTRUCTIONS ARE NEEDED. GET NAMES **
  52. 510  REM ** OF ALL PLAYERS AND INITIALIZE VALUES OF ALL GAME VARIABLES **
  53. 520  REM
  54. 530  CLS : LOCATE 12,32 : COLOR 23,1,1 : PRINT "W O R D   W A R S" : COLOR 7,1,1
  55. 540  FOR Z = 1 TO 2500 : NEXT Z : CLS
  56. 550  INPUT "DO YOU NEED INSTRUCTIONS (Y/N)";A$ : IF LEFT$(A$,1) = "Y" THEN GOSUB 2100
  57. 555  IF LEFT$(A$,1) = "y" THEN GOSUB 2100
  58. 560  CLEAR 3000 : DEFINT A-Z
  59. 570  P = 20
  60. 580  PRINT : INPUT "HOW MANY PEOPLE ARE PLAYING WORD WARS";NP
  61. 590  IF NP < 1 THEN PRINT :PRINT "ARE YOU KIDDING? " : GOTO 580
  62. 600  IF NP > 6 THEN PRINT : PRINT "SIX PLAYERS MAXIMUM. IF YOU HAVE MORE, I SUGGEST YOU FORM TEAMS." : GOTO 580
  63. 610  DIM WD$(NP-1,34)  'ARRAY OF WORDS FORMED BY EACH PLAYER
  64. 620  DIM OS(6),NW(NP-1,6),NM$(NP-1),NS$(NP-1),SC(NP-1),TS!(NP-1),CS!(NP-1),BN(6),WA(25),WW(25) : NL = 13
  65. 630  FOR I = 1 TO NP
  66. 640  PRINT : PRINT "WHAT'S PLAYER #";STR$(I);"'S NAME";:INPUT NM$(I-1) : NEXT I
  67. 650  FOR I = 0 TO NP-1 : IF RIGHT$(NM$(I),1) = "S" THEN NS$(I) = NM$(I) + "'" ELSE NS$(I) = NM$(I) + "'S"
  68. 660  NEXT I
  69. 670  GW$ = "AAAAAAAAABBCCDDDDEEEEEEEEEEEEFFGGGHHIIIIIIIIIJKLLLLMMNNNNNNOOOOOOOOPPQRRRRRRSSSSTTTTTTUUUUVVWWXYYZ"
  70. 680  UB$ = STRING$(4,32) + CHR$(222) + STRING$(6,32) + CHR$(222) + STRING$(7,32) + CHR$(222) + STRING$(8,32) + CHR$(222) + STRING$(9,32) + CHR$(222) + STRING$(10,32) + CHR$(222) + STRING$(14,32)
  71. 690  KP = 55
  72. 700  OS(0) = 0 : OS(1) = 6 : OS(2) = 13 : OS(3) = 21 : OS(4) = 30 : OS(5) = 40 : OS(6) = 51
  73. 710  BN(0) = 0 : BN(1) = 5 : FOR I = 2 TO 6 : BN(I) = BN(I-1)*2 : NEXT I
  74. 720  AD = 7 : GN = 1
  75. 730  BP = 1750
  76. 740  REM
  77. 750  REM ** DRAW THE SCREEN TEMPLATE **
  78. 760  REM
  79. 770  CLS : PRINT "GAME NUMBER";GN
  80. 780  LOCATE 2,1 : PRINT "LETTERS:";
  81. 790  LOCATE 1,60 : PRINT "TIME LEFT:";
  82. 800  COLOR 10,1,1 : LOCATE 7,1: PRINT STRING$(80,219); : LOCATE 13,1 : PRINT STRING$(80,219);
  83. 810  FOR Z = 8 TO 12 : LOCATE Z,1 : PRINT UB$; : NEXT Z
  84. 820  COLOR 7,1,1
  85. 830  REM
  86. 840  REM ** BEGINNING OF MAIN GAME LOOP.  GENERATE THE ROLL OF LETTERS **
  87. 850  REM ** FOR THIS GAME.  INITIALIZE NECESSARY VARIABLES             **
  88. 860  REM
  89. 870  GOSUB 310
  90. 880  SB = 0
  91. 890  FOR CP = 0 TO NP - 1
  92. 900  CL = 180 : LOCATE 1,72 : PRINT CL;CHR$(30);
  93. 910  IF NP > 1 THEN LOCATE 18,10:PRINT "IT'S ";NS$(CP);" TURN...CLEAR THE AREA!      "
  94. 920  LOCATE 20,1 : PRINT "HIT <ENTER> WHEN READY TO PLAY, ";NM$(CP);CHR$(30);
  95. 930  A$ = INKEY$ : IF A$ <> CHR$(13) THEN GOTO 930
  96. 940  LOCATE 18,10 : PRINT STRING$(60,32); : LOCATE 20,1 : PRINT STRING$(60,32);
  97. 950  COLOR 14,1,1
  98. 960  FOR I = 1 TO NL : LOCATE 2,15+2*(I-1) : PRINT MID$(RL$,I,1);:NEXT I
  99. 970  COLOR 7,1,1
  100. 980  LOCATE 6,1:PRINT NS$(CP);" WORDS";:LOCATE 6,60:PRINT "SCORE: ";
  101. 990  IF NP > 1 AND SB <> 0 THEN LOCATE 16,20 : PRINT "SCORE TO BEAT: ";SB;
  102. 1000  BW = 0
  103. 1010  REM
  104. 1020  REM ** GET A WORD USING INPUT SUBROUTINE.  VERIFY THAT IT HAS NOT BEEN **
  105. 1030  REM ** PLAYED BEFORE, HAS AT LEAST THREE LETTERS, AND CONTAINS ONLY    **
  106. 1040  REM ** LETTERS IN THE ROLL: ALSO CHECK NUMBER OF WORDS OF THAT LENGTH  **
  107. 1050  REM
  108. 1060  FOR I = 0 TO 25 : WW(I) = WA(I) : NEXT I
  109. 1070  LOCATE 4,1:PRINT "YOUR WORD, ";NM$(CP);"?";:P = 1+POS(0) : PRINT STRING$(50,32);:W$ = "" : GOTO 170
  110. 1080  LOCATE 4,1 : PRINT "CHECKING ";W$;"...                    ";
  111. 1090  FOR I = 1 TO LEN(W$) : L = ASC(MID$(W$,I,1))-65
  112. 1100  WW(L) = WW(L)-1 : IF WW(L)<0 THEN GOTO 1120 ELSE NEXT I
  113. 1110  GOTO 1390
  114. 1120  IF WA(L) = 0 THEN M$ = "** THERE ARE NO "+MID$(W$,I,1)+"'S IN THIS ROLL **" ELSE M$ = "** YOUR WORD CONTAINS TOO MANY "+MID$(W$,I,1)+"'S **"
  115. 1130  ' M$ = "** YOUR WORD CONTAINS TOO MANY "+MID$(W$,I,1)+"'S **"
  116. 1140  GOSUB 430 : GOTO 1060
  117. 1150  REM
  118. 1160  REM ** CLOCK HAS RUN OUT.  BEEP BEEPER **
  119. 1170  REM
  120. 1180  BEEP : LOCATE 18,25: COLOR 12,14,4 : PRINT "-------TIME'S UP-------";: COLOR 7,1,1
  121. 1190  IF CP <> NP-1 THEN LOCATE 22,18 : PRINT "HIT <ENTER> TO SET UP FOR NEXT PLAYER"; ELSE  LOCATE 22,18 : PRINT "HIT <ENTER> TO REVIEW GAME SCORING";
  122. 1200  REM
  123. 1210  REM ** END OF GAME FOR CURRENT PLAYER.  BLANK PLAYER'S WORDS FROM THE **
  124. 1220  REM ** SCREEN, CHECK IF PLAYER ACHIEVED A NEW HIGH SCORE FOR THIS     **
  125. 1230  REM ** ROLL, AND GO ON TO THE NEXT PLAYER IF THERE IS ONE             **
  126. 1240  REM
  127. 1250  A$ = INKEY$ : IF A$ <> CHR$(13) THEN GOTO 1250
  128. 1260  LOCATE 2,10 : PRINT STRING$(60,32);
  129. 1270  LOCATE 22,33 : PRINT STRING$(30,32);
  130. 1280  LOCATE 22,18 : PRINT STRING$(50,32);
  131. 1290  COLOR 2,1,1 : FOR Z = 8 TO 12 : LOCATE Z,1 : PRINT UB$;: NEXT Z : COLOR 7,1,1
  132. 1300  LOCATE 4,1:PRINT CHR$(30);:LOCATE 6,1:PRINT CHR$(30);:LOCATE 2,10:PRINT CHR$(30);:LOCATE 3,20:PRINT CHR$(30);:LOCATE 15,1:PRINT CHR$(30);
  133. 1310  IF SC(CP) > SB THEN SB = SC(CP)
  134. 1320  NEXT CP
  135. 1330  GOTO 1650
  136. 1340  REM
  137. 1350  REM ** WORD VALIDATION ROUTINES.  IF WORD IS GOOD, CALCULATE ITS **
  138. 1360  REM ** POINT VALUE AND ADD IT TO PLAYER'S TOTAL SCORE.  CHECK TO **
  139. 1370  REM ** SEE IF NEW TOTAL SCORE QUALIFIES PLAYER FOR DOUBLE  BONUS **
  140. 1380  REM
  141. 1390  TI = 30 : LW = LEN(W$) : IF LW > 8 THEN LW = 9
  142. 1400  IF LW < 3 THEN M$ = "** WORDS MUST HAVE AT LEAST THREE LETTERS **" : GOSUB 430 : GOTO 1060
  143. 1410  IF NW(CP,LW-3)=5 THEN M$ ="** YOU ALREADY HAVE 5 WORDS OF THAT LENGTH **" : GOSUB 430 : GOTO 1060
  144. 1420  NW = NW(CP,LW-3)
  145. 1430  IF NW = 0 THEN GOTO 1470
  146. 1440  FOR J = 5*(LW-3) TO 5*(LW-3) + NW - 1
  147. 1450  IF WD$(CP,J) <> W$ THEN NEXT J : GOTO 1470
  148. 1460  M$ = "** SORRY!  YOU ALREADY HAVE THAT ONE! **" : GOSUB 430 : GOTO 1060
  149. 1470  NW = NW(CP,LW-3) : NW(CP,LW-3) = NW + 1
  150. 1480  WD$(CP,5*(LW-3)+NW) = W$
  151. 1490  IF LEN(W$) > 13 THEN W$ = LEFT(W$,13)
  152. 1500  A = 8+NW : B = 1 + OS(LW-3)
  153. 1510  GOSUB 2580 : LOCATE A,B : PRINT W$;     ' ESTABLISHES PRINT POSITION OF PLAYER'S WORDS
  154. 1520  SC = LW*10
  155. 1530  BN = BN(LW-3)*(NW+1)
  156. 1540  IF SC(CP) > BP THEN BN = BN + BN
  157. 1550  SC = SC + BN : SC(CP) = SC(CP)+SC : LOCATE 6,65:PRINT SC(CP);CHR$(30);
  158. 1560  COLOR 31,1,1
  159. 1570  IF SC(CP)>BP AND BW=0 THEN GOSUB 2690 : M$ ="** GREAT!!  YOU JUST WENT INTO DOUBLE BONUS TIME **":GOSUB 430:M$="-- ALL BONUS SCORES ARE NOW DOUBLED --":GOSUB 430:M$="-- AND YOU GET 60 SECONDS OF EXTRA TIME --":GOSUB 430:CL = CL + 60 : BW=-1
  160. 1580  COLOR 7,1,1
  161. 1590  LOCATE 18,25 : PRINT STRING$(50,32);
  162. 1600  GOTO 1060
  163. 1610  REM
  164. 1620  REM ** LIST PLAYER'S WORDS ON THE SCREEN FOR POSSIBLE **
  165. 1630  REM ** CHALLENGE BY OTHER PLAYERS                     **
  166. 1640  REM
  167. 1650  FOR I = 0 TO NP -1
  168. 1660  CLS : PRINT NS$(I);" WORDS:"
  169. 1670  FOR K = 0 TO 4 : SZ = 3 : LOCATE 5+K,3:PRINT ;: FOR J = 0 TO 34 STEP 5 : SZ = SZ + 1
  170. 1680  IF WD$(I,J+K) = "" THEN PRINT STRING$(SZ,32); ELSE PRINT WD$(I,J+K);" ";
  171. 1690  NEXT J : NEXT K : PRINT:PRINT
  172. 1700  PRINT : PRINT "ANY OF ";NS$(I);" WORDS MAY NOW BE CHALLENGED."
  173. 1710  PRINT : PRINT "ARE ALL OF ";NS$(I);:INPUT " WORDS OK (Y/N)";A$
  174. 1720  IF LEFT$(A$,1) = "N" THEN LOCATE 20,1 : PRINT "WHICH WORD IS INCORRECT";:INPUT W$ ELSE 1780
  175. 1730  FD = 0 : FOR XX = 0 TO 34 : IF WD$(I,XX) = W$ THEN FD = -1 : WD$(I,XX) = "": GOTO 1740 ELSE NEXT XX
  176. 1740  LW = LEN(W$) : IF LW > 9 THEN LW = 9
  177. 1750  IF FD THEN PN = LW*10+2*(BN(LW-3)*5)
  178. 1760  IF FD THEN LOCATE 22,1:PRINT "SORRY ";NM$(I);", THAT'LL COST YOU ";PN;" POINTS.";CHR$(30); : FOR XX = 1 TO 2400 : NEXT XX : SC(I) = SC(I)-PN : PRINT "YOUR NEW SCORE IS ";SC(I);"POINTS.";CHR$(30);: FOR XX = 1 TO 2400 : NEXT XX : GOTO 1660
  179. 1770  LOCATE 22,1 : PRINT "THAT'S NOT ONE OF ";NS$(I);" WORDS";CHR$(30);: FOR XX = 1 TO 2400 : NEXT XX : GOTO 1660
  180. 1780  NEXT I
  181. 1790  REM
  182. 1800  REM ** LIST PLAYERS IN DESCENDING ORDER OF THEIR SCORES FOR   **
  183. 1810  REM ** THE PREVIOUS GAME, AND THEN BY THEIR CUMULATIVE SCORES **
  184. 1820  REM ** FOR THE CURRENT TOURNAMENT                             **
  185. 1830  REM
  186. 1840  CLS:PRINT TAB(20);"SCORING FOR ROUND ";GN:PRINT :PRINT "NAME";TAB(53);"SCORE ":PRINT "----";TAB(53);"-----"
  187. 1850  FOR I = 0 TO NP-1 : TS!(I) = SC(I) : NEXT I
  188. 1860  FOR J = 1 TO NP
  189. 1870  HS! = -1E+36 : W = 0 : FOR I = 0 TO NP-1 : IF TS!(I) >=HS! THEN HS! = TS!(I): W = I
  190. 1880  NEXT I : PRINT NM$(W);STRING$(52-POS(0),".");USING"######";SC(W): TS!(W)=-1E+36 : NEXT J
  191. 1890  LOCATE 24,1 : PRINT "PRESS <ENTER> TO CONTINUE";
  192. 1900  A$ = INKEY$ : IF A$ = "" THEN GOTO 1900 ELSE  IF A$ = CHR$(13)THEN GOTO 1910 ELSE 1900
  193. 1910  CLS : IF GN = 5 THEN PRINT TAB(15);"FINAL SCORES FOR TOURNAMENT:" ELSE PRINT TAB(19);"CUMULATIVE SCORING:"
  194. 1920  PRINT :PRINT "NAME";TAB(53);"SCORE":PRINT "----";TAB(53);"-----"
  195. 1930  FOR J = 0 TO NP-1 : CS!(J) = CS!(J)+SC(J): SC(J) = 0 : NEXT J
  196. 1940  FOR I = 0 TO NP-1: TS!(I) = CS!(I) : NEXT I
  197. 1950  FOR J = 1 TO NP
  198. 1960  HS! = -1E+36: W=0 : FOR I = 0 TO NP-1 : IF TS!(I) >HS! THEN HS!=TS!(I) : W = I
  199. 1970  NEXT I: PRINT NM$(W);STRING$(52-POS(0),".");USING "######";CS!(W): TS!(W) = -1E+36 : NEXT J
  200. 1980  REM
  201. 1990  REM ** END OF GAME CHECK **
  202. 2000  REM
  203. 2010  IF GN < 5 THEN GN = GN+1 : LOCATE 23,1 : PRINT "HIT <ENTER> WHEN READY FOR GAME #";GN; : INPUT A$: CLS: GOTO 2050
  204. 2020  LOCATE 23,1 : PRINT "ANOTHER TOURNAMENT (Y/N)";
  205. 2030  A$ = INKEY$ : IF A$ = "" THEN GOTO 2030 ELSE  IF A$ = "Y" THEN PRINT A$;: GOTO 2040 ELSE IF A$ = "N" THEN PRINT A$: PRINT "THANKS FOR PLAYING!":END ELSE 2030
  206. 2040  FOR I = 0 TO NP-1 : CS!(I) = 0 : NEXT I: NL = 13 : GN = 1
  207. 2050  FOR I = 0 TO NP-1 : FOR J = 0 TO 34 : WD$(I,J)="": NEXT J:FOR K = 0 TO 6 : NW(I,K)=0 : NEXT K:NEXT I:A$ = INKEY$ : A$ = "" : IF GN = 5 THEN NL = 20
  208. 2060  GOTO 770
  209. 2070  REM
  210. 2080  REM ** PRINT INSTRUCTIONS **
  211. 2090  REM
  212. 2100  CLS : PRINT "THE OBJECT OF 'WORDWARS` IS TO MAKE AS MANY WORDS AS YOU CAN FROM A GROUP"
  213. 2110  PRINT "OF RANDOMLY SELECTED LETTERS DISPLAYED ON THE SCREEN WHILE WORKING AGAINST"
  214. 2120  PRINT "A TIME LIMIT OF ABOUT THREE MINUTES.":PRINT
  215. 2130  PRINT "WORDWARS MAY BE PLAYED BY A SINGLE PLAYER, COMPETING AGAINST THE CLOCK AND"
  216. 2140  PRINT "TRYING TO EARN THE HIGHEST POSSIBLE SCORE, OR BY UP TO SIX PEOPLE PLAYING"
  217. 2150  PRINT "AGAINST THE CLOCK AND EACH OTHER.":PRINT
  218. 2160  PRINT "YOUR WORDS MUST CONTAIN AT LEAST THREE LETTERS.  THEY ARE GROUPED ON THE"
  219. 2170  PRINT "SCREEN ACCORDING TO LENGTH.  YOU CAN MAKE UP TO FIVE WORDS OF EACH LENGTH"
  220. 2180  PRINT "FROM THREE TO EIGHT LETTERS AND FIVE WORDS WITH MORE THAN EIGHT LETTERS.":PRINT
  221. 2190  PRINT "NO PROPER NOUNS ARE ALLOWED, BUT CONTRACTIONS, PLURALS AND ALL PREFIXES"
  222. 2200  PRINT "AND SUFFIXES ARE PERMITTED.":PRINT
  223. 2210  PRINT "A GROUP OF FIVE GAMES, OR ROUNDS, IS CALLED A TOURNAMENT.  IN THE FIRST"
  224. 2220  PRINT "FOUR GAMES YOU MAKE YOUR WORDS FROM A ROLL OF THIRTEEN LETTERS.  IN THE"
  225. 2230  PRINT "FIFTH GAME OF THE TOURNAMENT YOU WILL HAVE TWENTY LETTERS TO WORK WITH."
  226. 2240  GOSUB 2560
  227. 2250  PRINT "IF THERE IS MORE THAN ONE PLAYER, EACH GETS A THREE MINUTE TURN WITH THE"
  228. 2260  PRINT "SAME GROUP OF LETTERS.  NATURALLY, THOSE WHO HAVE NOT YET HAD THEIR TURN"
  229. 2270  PRINT "SHOULD NOT WATCH THE SCREEN WHILE OTHERS ARE FORMING THEIR WORDS.":PRINT
  230. 2280  PRINT "AFTER EACH PLAYER HAS HAD HIS, OR HER TURN, EVERYONE'S WORDS ARE DISPLAYED"
  231. 2290  PRINT "FOR POSSIBLE CHALLENGES FROM THE OTHERS.  YOU MAY NEED A DICTIONARY, OR"
  232. 2300  PRINT "SOME OTHER MEANS OF ARBITRATION.":PRINT
  233. 2310  PRINT "ALL PLAYERS ARE THEN RANKED ACCORDING TO THEIR SCORE FOR THE CURRENT GAME"
  234. 2320  PRINT "AND THEN THEIR TOTAL CUMULATIVE SCORE IS DISPLAYED.  ":PRINT
  235. 2330  PRINT "A WORD ON SCORING.  THE BASIC SCORE FOR A WORD IS TEN POINTS TIMES THE"
  236. 2340  PRINT "NUMBER OF LETTERS IN THE WORD.  IN ADDITION, A BONUS RANGING FROM ZERO TO"
  237. 2350  PRINT "EIGHT HUNDRED POINTS IS ADDED TO THE SCORE OF EACH WORD.":PRINT
  238. 2360  PRINT "THE MORE LETTERS IN A WORD, AND THE MORE WORDS OF THAT SIZE YOU HAVE"
  239. 2370  PRINT "ALREADY, THE HIGHER THE BONUS.":PRINT
  240. 2380  PRINT "IF YOU GET MORE THAN 1750 POINTS IN A GAME, YOU GO INTO DOUBLE BONUS MODE."
  241. 2390  PRINT "THE BONUS FOR EACH --ADDITIONAL-- WORD YOU MAKE IS DOUBLED.  YOU ALSO"
  242. 2400  PRINT "RECEIVE AN ADDITIONAL SIXTY SECONDS OF PLAYING TIME.":PRINT
  243. 2410  GOSUB 2560
  244. 2420  PRINT "IF ANY OF YOUR WORDS ARE CHALLENGED AND FOUND TO BE INVALID YOU ARE"
  245. 2430  PRINT "PENALIZED AT THE HIGHEST POSSIBLE SCORE FOR A WORD OF ITS SIZE.  THAT IS,"
  246. 2440  PRINT "AT THE BASE SCORE PLUS THE LARGEST (DOUBLE) POSSIBLE BONUS.":PRINT
  247. 2450  PRINT "IF YOU MAKE A MISTAKE WHILE TYPING A WORD, SIMPLY BACKSPACE TO THE POINT"
  248. 2460  PRINT "OF ERROR AND RETYPE YOUR ENTRY.  IF YOU DECIDE THE ROLL OF RANDOMLY"
  249. 2470  PRINT "SELECTED LETTERS IS NOT TO YOUR LIKING HOLD DOWN THE 'ALT' KEY WHILE"
  250. 2480  PRINT "PRESSING 030 ON THE NUMERIC KEYPAD.  THIS WILL START THE CURRENT GAME"
  251. 2490  PRINT "OVER WITH A FRESH ROLL OF LETTERS.":PRINT
  252. 2500  PRINT "IF YOU HAVE MADE ALL THE WORDS YOU CAN THINK OF AND WISH TO END THE"
  253. 2510  PRINT "CURRENT ROUND AND GO ON TO THE NEXT GAME, HOLD THE 'ALT' KEY WHILE PRESSING "
  254. 2520  PRINT "027 ON THE NUMERIC KEYPAD.  THIS STARTS THE NEXT GAME AND PRESERVES"
  255. 2530  PRINT "YOUR SCORE FOR THE CURRENT GAME.":PRINT
  256. 2540  PRINT "YOU MAY FIND IT FUN AT PARTIES TO LET SEVERAL PLAYERS WORK AS A TEAM."
  257. 2550  PRINT "WHATEVER YOU DO, HAVE FUN AND IMPROVE YOUR VOCABULARY."
  258. 2560  PRINT : INPUT "PRESS <ENTER> TO CONTINUE";Z
  259. 2570  CLS : RETURN
  260. 2580  REM
  261. 2590  REM  ** MUSIC GENERATED WHEN PLAYER FORMS WORD **
  262. 2600  REM
  263. 2610  STARTNOTE = 40
  264. 2620  NOTE = STARTNOTE
  265. 2630  PLAY "MBL52"  'NOTE LENGTH
  266. 2640  FOR R = 1 TO LEN(W$)
  267. 2650  PLAY NOTE$
  268. 2660  NOTE = NOTE + 1 : NOTE$ = "N" + STR$(NOTE) 'GO UP ONE NOTE
  269. 2670  NEXT R
  270. 2680  RETURN
  271. 2690  REM
  272. 2700  REM  ** MUSIC GENERATED WHEN PLAYER ENTERS DOUBLE BONUS MODE **
  273. 2710  REM
  274. 2720  PLAY "MBO2L4AO3L8C#L16EL4A.L8BO4L8C+.L16C+O3L8B.L16AO3L8B.L16AL8F+.L16AL4EL8F+.L16G#L8A.O4L16C+L8E.L16EL8F+.L16EL8F+.O4L16G+L8F+.L16EL8C+.L16EO2L4AO3L8C#L16EL4A.L8BO4L8C+.L16C+O3L8B.L16A"
  275. 2730  PLAY"O4L8C+.L16DL8E.L16C+L8D.L16EL8F+.L16DL8C+.L16EL8A.L16C+O3L8B.L16AL8B.O4L16C+O3L2AL1A"
  276. 2740  RETURN
  277. 2750  CL = 1 : LOCATE 1,71 : PRINT "      "; : RETURN
  278.